﻿namespace BackupConsoleClient
{
    /// <summary>
    /// Types of supportted commands.
    /// </summary>
    enum CommandType
    {
        /// <summary>
        /// Save the file on backup system.
        /// </summary>
        /// <remarks>
        /// file    - The path to the file.
        /// </remarks>
        Save,
        
        /// <summary>
        /// Load the file by id.
        /// </summary>
        /// <remarks>
        /// name    -   The id of the file.
        /// uploadedBy - (optional) The name of the user that uploaded the file. Default value is the current user.
        /// </remarks>  
        LoadById,
        
        /// <summary>
        /// Load the file by name.
        /// </summary>
        /// name    -   The name of the file.
        /// uploadedBy  -   (optional) The name of the user that uploaded the file. Default value is the current user.
        LoadByName,
        
        /// <summary>
        /// Get the content of the file.
        /// </summary>
        /// <remarks>
        /// name    -   The id of the file.
        /// uploadedBy - (optional) The name of the user that uploaded the file. Default value is the current user.
        /// file    - A path on the client computer where the stream is saved.
        /// </remarks>  
        LoadContentToFile,

        /// <summary>
        /// Gets a list of files information about the files that a specific user uploaded.
        /// </summary>
        /// <remarks>
        /// uploadedBy - (optional) The name of the user that uploaded the file. Default value is the current user.
        /// </remarks>
        LoadAll,

        /// <summary>
        /// Delete the file by id.
        /// </summary>
        /// <remarks>
        /// name    -   The id of the file.
        /// uploadedBy - (optional) The name of the user that uploaded the file. Default value is the current user.
        /// </remarks>  
        Delete,

        /// <summary>
        /// Save a new tag.
        /// </summary>
        /// <remarks>
        /// name        -   The name of the tag
        /// parentTagId    -   (optional) The parent tag id.
        /// </remarks>
        TagSave,

        /// <summary>
        /// Delete a specific tag.
        /// </summary>
        /// <remarks>
        /// id  -   The id of the tag.
        /// </remarks>
        TagDelete,

        /// <summary>
        /// Get the parent tag;
        /// </summary>
        /// <remarks>
        /// id  -   The current tag.
        /// </remarks>
        TagGetParent,

        /// <summary>
        /// Get childrens tag.
        /// </summary>
        /// <remarks>
        /// id  -   The current tag.
        /// </remarks>
        TagGetChildrens,

        /// <summary>
        /// Get a tag with a specific id.
        /// </summary>
        /// <remarks>
        /// id  -   The current tag.
        /// </remarks>
        TagLoad,

        /// <summary>
        /// Load all the tags from repository.
        /// </summary>
        TagLoadAll,

        /// <summary>
        /// Get all entities with the given id.
        /// </summary>
        /// <remarks>
        /// id  -   Tag id
        /// </remarks>
        GetBackupEntitiesByTag
    }
}
